#ifndef _TYPES_H_
#define _TYPES_H_

// 无符号整数类型定义
typedef unsigned char uint8;   //  8位无符号整数 (0 ~ 255)
typedef unsigned short uint16; // 16位无符号整数 (0 ~ 65535)  
typedef unsigned int uint32;   // 32位无符号整数 (0 ~ 4,294,967,295)
typedef unsigned long uint64;  // 64位无符号整数
typedef unsigned long size_t;  // 大小类型，用于表示内存大小

// 有符号整数类型定义
typedef signed char int8;      //  8位有符号整数 (-128 ~ 127)
typedef signed short int16;    // 16位有符号整数 (-32768 ~ 32767)
typedef signed int int32;      // 32位有符号整数 (-2147483648 ~ 2147483647)
typedef signed long int64;     // 64位有符号整数

// 可变参数支持
// 使用GCC内置函数实现可变参数，不依赖标准库
typedef __builtin_va_list va_list;           // 可变参数列表类型
#define va_start(ap, last) __builtin_va_start(ap, last)  // 初始化可变参数列表
#define va_arg(ap, type) __builtin_va_arg(ap, type)      // 获取下一个参数
#define va_end(ap) __builtin_va_end(ap)                  // 清理可变参数列表

#endif